Complex software systems comprise a plurality of different and to some extent interacting modules. In this context a module can also be a method, function, etc. The problem frequently arises here that the performance of the software system is not satisfactory. A high level of understanding of the software system is necessary to discover which module(s) is/are responsible for the poor performance.
So-called call graphs are a known analysis instrument for software development. A software system can be displayed as a cal graph making it easier to understand. The graph, which is easy for programmers to read, shows the structure and architecture of a software system in readily understood manner. This makes it easy to modify and test the software system. The call graph documents, clarifies and increases understanding of program code and software systems.
Call graphs map calls and dependencies of the individual components on one another as edges in the graph. With synchronous software systems in particular the call graph is a proven analysis and documentation tool. During the analysis, in particular the performance analysis, of complex multithreading software systems however calls are not the only dependencies of the software system. Reciprocal blocking, commonly used hardware resources and many other things produce dependencies, which influence the runtime of the software system.
A tool, which allows the creation of a call graph and also demonstrates resource-consuming dependencies in a software system would therefore be desirable. Such a dependency graph could be used not only in software development and analysis but also during the development, analysis and documentation of any technical systems. Dependency graphs facilitate an understanding of cohesive technical systems.